Package org.terrier.structures

Source Code of org.terrier.structures.TestBasicLexiconEntry

/*
* Terrier - Terabyte Retriever
* Webpage: http://terrier.org/
* Contact: terrier{a.}dcs.gla.ac.uk
* University of Glasgow - School of Computing Science
* http://www.gla.ac.uk/
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is TestBasicLexiconEntry.java
*
* The Original Code is Copyright (C) 2004-2011 the University of Glasgow.
* All Rights Reserved.
*
* Contributor(s):
*   Craig Macdonald <craigm{a.}dcs.gla.ac.uk> (original contributor)
*/
package org.terrier.structures;
import static org.junit.Assert.assertEquals;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.hadoop.io.Writable;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

import org.terrier.structures.BasicLexiconEntry.Factory;
/** Tests that BasicLexiconEntry behaves as expected */
public class TestBasicLexiconEntry {
 
  @Rule
    public TemporaryFolder tmpfolder = new TemporaryFolder();

 
  @Test public void testBasic() throws Exception
  {
    BasicLexiconEntry le = new BasicLexiconEntry();
    //term id
    le.setTermId(1);
    assertEquals(le.getTermId(), 1);
    //position
    le.setOffset(0, (byte)0);
    assertEquals(le.getOffset(), 0);
    assertEquals(le.getOffsetBits(), (byte)0);
   
    le = new BasicLexiconEntry(2, 2, 5);
    assertEquals(le.getDocumentFrequency(), 2);
    assertEquals(le.getFrequency(), 5);
    le.add(new BasicLexiconEntry(0,1,10));
    assertEquals(le.getDocumentFrequency(), 3);
    assertEquals(le.getFrequency(), 15);
  }
 
  @Test public void testWritable() throws Exception
  {
    Factory f = new Factory();
    BasicLexiconEntry le = (BasicLexiconEntry)f.newInstance();
    le.setTermId(100);
    le.setOffset(10, (byte)11);
    byte[] b = getBytes(le);
    System.err.println("le written in "+b.length+" bytes");
    assertEquals(b.length, f.getSize());
    BasicLexiconEntry leReader = (BasicLexiconEntryf.newInstance();
    populateEntry(leReader, b);
    assertEquals(le.getTermId(), leReader.getTermId());
    assertEquals(le.getFrequency(), leReader.getFrequency());
    assertEquals(le.getDocumentFrequency(), leReader.getDocumentFrequency());
    assertEquals(le.getOffset(), leReader.getOffset());
    assertEquals(le.getOffsetBits(), leReader.getOffsetBits());
  }
 
  @Test public void testWritableFile() throws Exception
  {
    Factory f = new Factory();
    BasicLexiconEntry le = (BasicLexiconEntry)f.newInstance();
    le.setTermId(100);
    le.setOffset(10, (byte)11);
    File tmpFile = tmpfolder.newFile("test.writable");
    DataOutputStream dos = new DataOutputStream(new FileOutputStream(tmpFile));
    le.write(dos);
    dos.close();
    BasicLexiconEntry leReader = (BasicLexiconEntry)f.newInstance();
    leReader.readFields(new DataInputStream(new FileInputStream(tmpFile)));
    assertEquals(le.getTermId(), leReader.getTermId());
    assertEquals(le.getFrequency(), leReader.getFrequency());
    assertEquals(le.getDocumentFrequency(), leReader.getDocumentFrequency());
    assertEquals(le.getOffset(), leReader.getOffset());
    assertEquals(le.getOffsetBits(), leReader.getOffsetBits());
  }
 
  static void populateEntry(LexiconEntry le, byte[] b) throws Exception
  {
    le.readFields(new DataInputStream(new ByteArrayInputStream(b)));
  }
 
    static byte[] getBytes(Writable w) throws Exception
  {
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();
    DataOutputStream dos = new DataOutputStream(buffer);
    w.write(dos);
    return buffer.toByteArray();
  }
}
TOP

Related Classes of org.terrier.structures.TestBasicLexiconEntry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.